9895. Арифметические
прогрессии
Пусть an, bn, cn – арифметические прогрессии. Известно, что
a1 + b1 + c1 = p,
a2 + b2 + c2 = q
Для заданного натурального k найдите значение выражения ak + bk + ck.
Вход. Три целых числа p, q (|p|,
|q| ≤ 1018), k (k > 0).
Выход. Выведите значение ak + bk + ck. Известно, что ответ по модулю не
больше 1018.
Пример
входа |
Пример
выхода |
2 5 10 |
29 |
математика
Пусть
da, db, dc – разницы соответственно
прогрессий an, bn, cn. Тогда
q – p = (a2 – a1) + (b2 – b1) + (c2 – c1) = da
+ db + dc
Отсюда
ak + bk + ck = a1 + da * (k – 1) + b1 + db * (k – 1) + c1 + dc * (k – 1) =
(a1 + b1 + c1) + (da + db + dc)
* (k – 1)
=
p
+ (q – p) * (k – 1)
Пример
Для заданного
примера d = q – p = 5 – 2 = 3.
Откуда a10 + b10 + c10 = p + d * 9
= 2 + 3 * 9 = 29.
Реализация алгоритма
Читаем
входные данные.
scanf("%lld %lld %lld", &p, &q, &k);
Вычисляем
res = ak + bk + ck.
d = q - p;
res = p + d * (k -
1);
Выводим
ответ.
printf("%lld\n", res);